"""
    windows下录制与播放音频
"""
import sounddevice as sd
import soundfile as sf
import pygame

def record_audio(file_path, duration=10, fs=16000, channels=1):
    """
    录制音频
    :param file_path: 音频文件路径
    :param duration: 录制时长（秒）
    :param fs: 采样率（Hz）
    :param channels: 声道数
    :return: 录制的音频数据
    """
    print("开始录音...")
    my_recording = sd.rec(int(duration * fs), samplerate=fs, channels=channels)
    sd.wait()  # 等待录音完成
    print("录音结束")
    sf.write(file_path, my_recording, fs)

def play_audio(file_path):
    """
    播放音频文件
    :param file_path: 音频文件路径
    """
    pygame.mixer.init()  # 初始化pygame的混音器模块
    pygame.mixer.music.load(file_path)  # 加载音频文件
    pygame.mixer.music.play()  # 播放音频
    while pygame.mixer.music.get_busy():  # 检查音乐是否播放完毕
        pygame.time.Clock().tick(10)  # 控制循环速度，避免使用太多CPU资源
    print("播放完毕")

# 测试
if __name__ == '__main__':
    file_name = "data/output.wav"
    # 示例：录制10秒的音频
    record_audio(file_name, 5)
    # 示例：播放之前录制的音频文件
    #play_audio(file_name)

